The main contributions of this paper are:
\begin{description}
  \item[Simplify ownership mechanisms]
    Most previous works used new mechanisms that are orthogonal to generics.
    Our previous work (OGJ and IGJ) reuses Java's underlying generic mechanism.
    However, OGJ prohibited using generic wildcards and certain kinds of generic methods.
    OIGJ increases the expressiveness of OGJ without introducing new mechanisms,
        by implementing
        scoped regions~\cite{Wrigstad2006} using \emph{generic methods},
        and existential owners~\cite{WrigstadC2007} using \emph{generic wildcards}.

  \item[No refactoring of existing code] %Implementation and case study]
    Java's collection classes (\code{java.util}) are properly encapsulated.
    We have implemented OIGJ,
        and verified the encapsulation by running the OIGJ type-checker
        without changing the source code (except for the \code{clone} method).
    Verifying Sun's \code{LinkedList} requires only 3 ownership annotations
        (see \Ref{Section}{case-studies}).
    Previous approaches to ownership or
        immutability required major refactoring of this codebase.

% Alex: We already said this in the abstract and we need space, paper already in, so it's OK to remove it. ;-)
%    Refactoring of well-designed code costs programmer effort,
%        results in worse design,
%        and hinders adoption in the mainstream community.

  \item[Flexibility]
    As illustrated by our case study, OIGJ is more flexible and practical
    than previous type systems.  For example, OIGJ can type-check the
    visitor design pattern
    % ~\cite{designpatterns}
    (see \Ref{Section}{oigj-language}), but other \emph{ownership}
    languages cannot~\cite{Nageli2006}. %(and few can type-check the factory pattern).
    Another advantage of OIGJ % can type-check more good code
        is that
        it uses ownership information to facilitate creating immutable cyclic structures
        by prolonging their cooking phase.

  \item[Formalization]
    We define a Featherweight OIGJ (FOIGJ) calculus to
        formalize the concepts of raw/cooked objects and wildcards as owner parameters.
    We prove FOIGJ is sound and show our ownership and immutability guarantees.

\end{description}


\textbf{Outline.} % The remainder of this paper is organized as follows.
\Ref{Section}{oigj-language}
        presents the OIGJ\@ language.
        % Alex: we say the same thing in  the next paragraph.
        %syntax, typing rules, and examples of use, such as the factory and visitor patterns.
\Ref{Section}{formal} defines the OIGJ formalization.
\Ref{Section}{case-studies} discusses the OIGJ implementation and the collections case study.
\Ref{Section}{related-work} compares OIGJ to related work,
    and \Ref{Section}{conclusion} concludes.

% LocalWords:  wildcards util oigj FOIGJ
